﻿using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using ABC_SA_DM;
using ABC_SA_DAL;
using System.Collections;
using System.Diagnostics;

namespace ABC_SA_BL
{
    public class Proveedor_BL
    {
        /* 
        * Autor..: Rubén García Montenegro
        * Fecha..: 06/03/2014
        * Detalle: Proceso de negecio Proveedor. Procesos para el mantenimiento de los datos del Proveedor
        */

        public Usuario_DAL dalUsuario = new Usuario_DAL();
        List<Proveedor> listaProveedor = new List<Proveedor>();

        /*
        * Agrega Proveedor. Llama DAL Usuario para ingresar solamente los procesos correspodientes al usuario:       
        * Usuario       
        * Contraseña
        * Rol ---- Por defecto es 1 para proveedor
        */
        public bool agregar(string usuario, string contrasena, string contacto, string telefono, string fax, string ubicacion, string categoria)
        {
            Proveedor proveedor = new Proveedor(usuario, contrasena, contacto, telefono, fax, ubicacion, categoria);

            if (dalUsuario.agregarUsuario(proveedor))
            {
                Proveedor_DAL dalProveedor = new Proveedor_DAL();

                if (dalProveedor.agregar(proveedor))
                    return true;
                else
                    return false;
            }
            else {
                return false;
            }
        }
        
        //Únicamente actualiza los datos del proveedor. Nombre de usuario, contraseña y rol no se debe actualizar por este proceso       
        public bool actualizar(string usuario, string contacto, string telefono, string fax, string ubicacion, string categoria)
        {
            Proveedor proveedor = new Proveedor();
            proveedor.UserName = usuario;
            proveedor.contacto = contacto;
            proveedor.telefono = telefono;
            proveedor.fax = fax;
            proveedor.ubicacion = ubicacion;
            proveedor.categoria = categoria;

            Proveedor_DAL dalProveedor = new Proveedor_DAL();

            if (dalProveedor.actualizar(proveedor))
                return true;
            else
                return false;
        }
        
        public bool eliminar(string usuario)
        {
            Proveedor proveedor = new Proveedor();
            proveedor.UserName = usuario;

            Proveedor_DAL dalProveedor = new Proveedor_DAL();

            if (dalProveedor.eliminar(proveedor))   // Primero se debe eliminar el proveedor, y seguidamente el Usuario. Debido que Proveedor tiene una referencia a Usuario.
            {
                if (dalUsuario.eliminarUsuario(proveedor.UserName)) // si eliminó correctamente el usuario devuelve un TRUE
                    return true;
                else
                    return false;
            }
            else
            {
                return false;
            }
        }

        public List<Proveedor> consultar() 
        {         
            Proveedor_DAL dalProveedor = new Proveedor_DAL();
            List<Proveedor> lista = dalProveedor.consultar();
            return lista;
        }

        public Proveedor consultarProveedor(string usuario) 
        {
            Proveedor_DAL dalProveedor = new Proveedor_DAL();
            return dalProveedor.consultarID(usuario);
        
        }

        /*************************** ORLANDO CAMPOS 17/04/2014 ********************************/

        public ArrayList consultaReporteProv(string nomUser, string fechDesde, string fechHasta)
        {
            Proveedor_DAL dalProveedor = new Proveedor_DAL();
            return dalProveedor.consultaReporteProv(nomUser, fechDesde, fechHasta);
        }

        public ArrayList consultaReporteCliente(string nomUser, string fechDesde, string fechHasta)
        {
            Proveedor_DAL dalProveedor = new Proveedor_DAL();
            return dalProveedor.consultaReporteCliente(nomUser, fechDesde, fechHasta);
        }

    }
}
